home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-ietf-idmr-igmp-sparse-00.txt < prev    next >
Text File  |  1993-10-29  |  104KB  |  2,145 lines

  1.  
  2.  
  3. IDMR Working Group                                     Steve Deering
  4. INTERNET-DRAFT                                            Xerox PARC
  5. Expires April 1993                                    Deborah Estrin
  6. <draft-ietf-idmr-igmp-sparse-00.txt>                         USC/ISI
  7.                                                       Dino Farinacci
  8.                                                        cisco Systems
  9.                                                         Van Jacobsen
  10.                                                                  LBL
  11.                                                     October 18, 1993
  12.  
  13.  
  14.     IGMP Router Extensions for Routing to Sparse Multicast-Groups
  15.  
  16.  
  17. Status of this Memo
  18.  
  19.    This document is an Internet Draft.  Internet Drafts are working
  20.    documents of the Internet Engineering Task Force (IETF), its Areas,
  21.    and its Working Groups. Note that other groups may also distribute
  22.    working documents as Internet Drafts).
  23.  
  24.    Internet Drafts are draft documents valid for a maximum of six
  25.    months. Internet Drafts may be updated, replaced, or obsoleted by
  26.    other documents at any time.  It is not appropriate to use Internet
  27.    Drafts as reference material or to cite them other than as a "working
  28.    draft" or "work in progress."
  29.  
  30.    Please check the I-D abstract listing contained in each Internet
  31.    Draft directory to learn the current status of this or any other
  32.    Internet Draft.
  33.  
  34.  
  35. **************************************************************************
  36. *********************P*L*E*A*S*E*****R*E*A*D******************************
  37.  
  38. ***October 18th version solves the problem of deadtimes between time when 
  39. receiver DR sets up S,G and when the associated join is processed all the 
  40. way upstream (the problem was that as soon as S,G is set up then packets 
  41. arriving on *,G would get dropped because the incoming interface does not 
  42. match). The fix is that you associate a bit with the S,G entry and when 
  43. it is cleared, packets that do not match the incoming interface are 
  44. checked agains *,G before being dropped. If they match *,G, they are 
  45. forwarded accordingly. Once a router sees a packet that matches S,G (both 
  46. longest match for source and incoming interface) it sets the bit 
  47. associated with S,G and from then on data packets must match the incoming 
  48. interface for S,G or be dropped.  A DR waits to send a prune up the 
  49. RP,tree until the SPT bit for the S,G entry is set.
  50.  
  51. ***DISCLAIMER: In my usual rush to get a revised version of this document
  52. to the IDMR list, Deering, Farinacci, and Jacobson did not get the chance to 
  53. review the recent detailed  changes to the document. I will be out of 
  54. town and largely off-the-net from October 18 until IETF. please send 
  55. comments to the list anyway and hopefully someone will be able to respond 
  56. in a timely manner. At the very least, we will collect them at IETF and 
  57. respond to them in real time. 
  58.  
  59. ***At the Amsterdam IETF we thought that we could eliminate S,G state on 
  60. the shared tree. After chasing our tails for a while we realized that in 
  61. order to maintain our ability to do an incoming interface check on data 
  62. packets, to detect multicast loops, we needed S,G specific state "offtree" of the 
  63. shared tree (to use CBT terminology).  However, to deal with sparse 
  64. traffic and with data packets sent before the S,G state is established we 
  65. support encapsulation of data packets in registers so that it is possible 
  66. that the S,G state might never be set up if it is not deemed necessary 
  67. (data packets are sporadic and few) and that at least data packets do not 
  68. need to be dropped (or buffered) until the S,G state is setup.
  69.  
  70. ***This brings up an important point, that we believe it critical to 
  71. do incoming interface checks on all multicast data packets because of the potentially 
  72. severe consequences of looping multicast packets. Any multicast protocol 
  73. that we design should have this capability. 
  74.  
  75. ***The biggest open issue with respect to this scheme is the need to 
  76. introduce an aggregation mechanism for S,G state and messages. Van has 
  77. proposed something called proxy. It looks doubtful that something will 
  78. get written up by IETF, but it will be the primary agenda item 
  79. immediately after. 
  80.  
  81. ***The major changes to this document since the last release is that we 
  82. 1. added back the S,G state upstream of the RP on the shared tree.
  83. 2. added a mechanism to disambiguate which RP is being used in the 
  84. multiple RP case (see additional check added to ESL-Join  processing 
  85. and additional check added to RP-reachability message processing).
  86. 3. Data packets travel encapsulated in register packets until the state 
  87. is established for S,G (e.g. the RPs' join propagates upstream to the 
  88. first hop router)
  89. 4. Register packets are sent unicast to the RP who sets up S,G and sends 
  90. joins upstream towards S to set up S,G state between the source and RP. 
  91. 5. All *,G entries have as their incoming interface the interface used to 
  92. reach the RP. 
  93. 6. Added option for Register and RP-reachability messages to carry 
  94. source, mask information downstream so that S,G entries can be set up 
  95. with appropriate (subnet) mask information. 
  96.  
  97.  
  98. ***Note:  The name ESL is not perfect; at least I, DE do not think so.
  99. This is particularly true in light of the dense mode scheme which will
  100. really be part of the same protocol. But to avoid changing the name
  101. repeatedly we are sticking with ESL and down the rode when the
  102. protocols themselves stabilize, we will reopen the question of names...
  103. **************************************************************************
  104.  
  105. 1. Introduction and Motivation
  106.  
  107. This document describes a mechanism for efficiently routing to sparse
  108. multicast groups that span wide-area (and inter-domain) internets. The
  109. implementation of our approach is based on extensions to IGMP[RFC1112]
  110. and makes use of explicit source lists. We refer to the scheme as ESL.
  111.  
  112. The mechanism proposed here complements existing multicast routing 
  113. mechanisms such as those implemented in MOSPF and DVMRP. These traditional 
  114. multicast schemes are well suited for use within local or wide area regions 
  115. where a group is widely represented. However, when group members, and 
  116. senders to those group members, are distributed SPARSELY across a wide 
  117. area, these schemes are not efficient; data packets (in the case of DVMRP) 
  118. or membership report information (in the case of MOSPF) are sent over many 
  119. links that do NOT lead to receivers or senders, respectively. The Explicit 
  120. Source List (ESL) extensions to IGMP, proposed here, efficiently establish 
  121. multicast distribution trees to reach members of a multicast group in 
  122. regions where members are NOT densely represented. 
  123.  
  124. Stated simply, when group members densely populate the internet, it is 
  125. efficient to assume that most networks or subnetworks contain members, 
  126. and to prune off the exception networks explicitly. In contrast, when 
  127. group members are sparse, it is efficient to assume that most networks or 
  128. subnetworks do NOT contain members, and to join on the exception networks 
  129. explicitly. Thus the basis of the scheme described in this document is an 
  130. explicit joining mechanism. In another document, in preparation, we will 
  131. describe a companion multicast routing protocol for dense groups that is 
  132. based  on implicit joining and explicit pruning.
  133.  
  134. The Core Based Tree (CBT) protocol supports sparse multicast groups
  135. with a shared (center-based) tree.[CBT] In contrast, the ESL protocol
  136. proposed here supports both center and source-specific distribution trees
  137. in order to provide  higher quality data distribution, when needed.
  138.  
  139. In the remainder of this section we enumerate our design goals and then 
  140. present necessary background on existing Reverse Path Multicasting (RPM) 
  141. mechanisms. Section 2 summarizes basic protocol operation and limitations. 
  142. Section 3 describes the protocol in detail (including packet formats). 
  143. Section 4 addresses robustness and Section 5 and 6 addresses interoperation 
  144. with networks that do not implement ESL-multicast. Section 7 briefly 
  145. compares our approach to CBT[cbt93] and addresses several open design 
  146. issues. 
  147.  
  148. 1.1 Design Goals
  149.  
  150. We had several design objectives in mind when designing this protocol:
  151.  
  152. 1.1.1  Efficient Sparse Group Support
  153.  
  154. Our primary design goal is efficient support for sparsely distributed
  155. wide-area multicast groups ("skinny trees"). We define a sparse group
  156. as one in which a) the number of networks/domains with members is
  157. significantly smaller than number of networks/domains in the Internet,
  158. so that traditional RPM or Link-State style multicast (e.g., MOSPF) is
  159. inefficient; b) group members span an area that is too large/wide
  160. to rely on scope control; and c) the internetwork spanned by the group is 
  161. not sufficiently resource rich to ignore the overhead of current schemes. 
  162. Sparse groups are not necessarily "small"; therefore we must
  163. support dynamic groups with large numbers of receivers.
  164.  
  165.    
  166. 1.1.2 High Quality Data Distribution 
  167.  
  168. We wish to support low-delay data distribution when needed by the 
  169. application. In particular, we avoid IMPOSING a single shared tree in which 
  170. data packets are forwarded to receivers along a common tree, independent of 
  171. their source. Source-specific trees are superior when (a) multiple sources 
  172. send data simultaneously and would experience poor service when the traffic 
  173. is all concentrated on a single shared tree, or (b) the path lengths 
  174. between sources and destinations in the shortest path tree (SPTs) are 
  175. significantly shorter than in the shared tree. In particular, to support 
  176. low-delay distribution for "continuous" media such as voice and video, it 
  177. is desirable (and perhaps essential) to avoid concentrating the traffic of 
  178. all sources onto a common distribution tree; it is preferable to spread the 
  179. traffic load and have the data travel over source-specific trees. Moreover, 
  180. for all types of traffic, if one wants to minimize path length, data 
  181. packets should travel along a shortest path distribution tree rooted in the 
  182. source; i.e., data packets are forwarded based on the {Multicast-Address, 
  183. Source} tuple (as in MOSPF). 
  184.  
  185. For some applications or contexts group trees are appropriate; for example, 
  186. resource-discovery applications where large numbers of sources transmit 
  187. packets intermittently. However, shared trees should not be imposed as the 
  188. only delivery option. In the scheme presented here a shared tree is 
  189. maintained as a rendezvous mechanism for new receivers and sources; 
  190. however, in steady state, data can be delivered over a shortest path from 
  191. receiver to sender, or over the shared tree. We use the term rendezvous 
  192. points (RPs) in this document because although similar, the role and 
  193. function of an RP is different from a Core router in the CBT scheme. 
  194.  
  195. The protocol described here is based on Reverse Path Forwarding. All RPF 
  196. schemes construct "reverse shortest path" trees. When unicast routes are 
  197. symmetric (i.e., the shortest path from a source to receiver is the same 
  198. as the shortest path from the receiver to the source), reverse shortest 
  199. path trees will provide equivalent paths to forward shortest path trees. 
  200. However, when unicast routes are not symmetric, the reverse shortest path 
  201. may be longer than the forward shortest path. Nevertheless, the  reverse 
  202. shortest path tree delays will still be superior, in general, to the use 
  203. of a shared  tree.
  204.  
  205.  
  206. 1.1.3 Routing Protocol Independent
  207.  
  208. The protocol should rely on existing unicast routing functionality to
  209. adapt to topology changes, but at the same time be independent of the
  210. particular protocol employed. This is achievable if the multicast
  211. protocol makes use of the unicast routing tables, independent of how
  212. those tables are computed.
  213.  
  214. 1.1.4 Interoperability
  215.  
  216. We need interoperability with traditional RPM and link-state multicast 
  217. routing, both intra- and inter-domain. For example, a single conversation 
  218. should allow intra-domain distribution to be established by IP-style 
  219. multicast (e.g. MOSPF) and inter-domain distribution established by ESL; 
  220. and to allow some inter-domain distribution to be established by ESL, and 
  221. some by another inter-domain multicast approach designed for more-densely 
  222. distributed groups. (This sidesteps the question of when to use which type 
  223. of multicast routing approach.). However, to interoperate with some 
  224. existing IGPs it will be necessary to impose some additional protocol or 
  225. configuration overhead. 
  226.  
  227. In support of interoperation with IP multicast, AND in support of groups 
  228. with very large numbers of receivers, we also wish to maintain the logical 
  229. separation of roles between receivers and senders. We may introduce some 
  230. optimization to support senders that are also receivers (this is often 
  231. appropriate to the application), but we do not want to impose the dual 
  232. role/symmetry. 
  233.  
  234.  
  235. 1.2. Reverse Path Forwarding
  236.  
  237. Before proceeding with a description of ESL we briefly describe existing 
  238. RPM mechanisms. This provides more detailed motivation for the extensions 
  239. proposed here, and provides background as to the existing mechanisms with 
  240. which ESL must interoperate.
  241.  
  242.  
  243. 1.2.1 RPM mechanisms
  244.  
  245. Reverse Path Forwarding (RPF) is a technique used to forward multicast 
  246. datagrams. A router will forward a multicast datagram, from a given source, 
  247. if it was received on the same interface that it uses to forward unicast 
  248. datagrams to that source. Hence, the reverse path is interrogated before 
  249. forwarding is performed. RPF forwards the data packet out all interfaces 
  250. except the incoming. Reverse Path Broadcasting (RPB) eliminates some of the 
  251. duplicate packets generated by RPF by only sending packets out on a subset 
  252. of the outgoing interfaces; this subset is based on a local database of 
  253. parent-child information obtained from the unicast routing protocol. 
  254. Truncated RPF or RPB detects leaf networks without members and stops 
  255. forwarding multicast packets for that group. Reverse Path Multicasting 
  256. (RPM) has mechanisms for detecting and distributing prune information 
  257. upstream of the truncated leaf networks to stop distribution of multicast 
  258. packets to parts of the network that do not have members. RPM schemes 
  259. periodically flush this prune information and revert back to RPF or RPB 
  260. behavior. In addition, explicit graft messages may be used to undo pruning 
  261. and thereby join new members into the distribution tree more quickly. 
  262.  
  263. 1.2.2 Router to Host interaction mechanisms
  264.  
  265. Hosts inform routers which multicast groups they are members of. Routers 
  266. use this information to tell other routers that group members are (MOSPF), 
  267. or are not (DVMRP), present. IGMP is the protocol mechanism for Router to 
  268. Host interaction for IP multicasting. In particular, Routers send IGMP Host 
  269. Query packets periodically to ask hosts for group membership information. 
  270. Hosts reply with IGMP Host Report packets for each multicast group they are 
  271. a member of; however when a host hears a membership join report from 
  272. another host on the same LAN, it will supress its join to avoid duplicates 
  273. [IGMP]. Hosts do not have to inform routers explicitly when they want to 
  274. send a multicast datagram. 
  275.  
  276. ESL uses this same mechanism to identify the location of group members.
  277. ESL will also use a router-to-router IGMP Query packet so adjacent
  278. multicast routers can be identified. See section 5 for details.
  279.  
  280.  
  281. 1.2.3 Limitations of Existing Multicast Routing Mechanisms
  282.  
  283. Existing multicast routing mechanisms work efficiently when most networks 
  284. have local members and therefore the default RPM treatment of data packets 
  285. (as in DVMRP), or flooding of link state advertisements with local 
  286. membership information (as in MOSPF) is appropriate. In this context the 
  287. lack of local members is best treated as an exception by issuing a "Prune" 
  288. message. However when most networks do NOT have local members there is 
  289. significant overhead associated with these schemes. One of the major 
  290. incentives to use multicast is efficient bandwidth usage (otherwise 
  291. multicast routing support would not be needed to begin with). This is most 
  292. critical in wide area and multi-domain internetworks where resources are 
  293. not as uniformly available as in the local and campus network context. 
  294.  
  295. 1.2.4 Scope Control
  296.  
  297. One way of limiting the overhead of multicast is to define a maximum 
  298. number of hops that all messages will traverse. In this way the multicast 
  299. group information will only be distributed within a limited region. 
  300. This is a perfect mechanism for local groups. However, for groups that 
  301. span wider areas, the scope would have to be set so high that the 
  302. reverse path multicasting of data packets, or the flooding of membership
  303. information,  would once again consume excessive resources.
  304.  
  305.  
  306. 1.3 Directly connected ESL routers
  307.  
  308. A directly connected router is one that either a) shares a physical network 
  309. with a receiver host (i.e., are both physically connected to a common 
  310. multi-access network), or b) is in the same domain as a receiver and some 
  311. other multicast routing protocol within the domain is used to distribute 
  312. multicast packets and to signal membership. A Directly connected ESL router 
  313. is the last hop ESL router, from the perspective of a receiver; it is the 
  314. first hop ESL router from the perspective of a source. 
  315.  
  316.  
  317.  
  318. 2. Overview of the Explicit Source List (ESL)  protocol design
  319.  
  320.  
  321. In the remainder of this document we describe a multicast 
  322. routing mechanism for sparse groups which can be realized with
  323. relatively simple extensions to IGMP[RFC112]. 
  324.  
  325. 2.1 ESL
  326.  
  327. We introduce two new IGMP message types to establish distribution trees 
  328. between sources and receivers (group members); routers send ESL-Join 
  329. messages upstream towards sources and routers send ESL-Register messages 
  330. downstream from sources to the RPs. An ESL-Join message contains both a 
  331. join and prune list; the former enumerates the sources from which the 
  332. downstream receivers wish to receive packets (via this router, i.e., this 
  333. upstream router) and the latter indicates the sources from which the 
  334. downstream receivers do not expect to receive packets (via this route). An 
  335. ESL-Register message identifies the group and is sent directly to each of 
  336. the RPs associated with the group. The  ESL messages are sent to unicast 
  337. addresses using raw IP. 
  338.  
  339. We can summarize the operation of the ESL scheme as follows.  One or
  340. more Rendezvous Points (RPs) are used INITIALLY to propagate data
  341. packets from sources to receivers. An RP may be an ESL-speaking router
  342. that is close to one of the members of the group, or it may be some
  343. other host or router in the network.  A sparse mode group, i.e., one
  344. that the receiver's directly connected ESL router will join using ESL.
  345. is identified by the presence of  RP address(es) associated with the
  346. group in question. The mapping information may be configured or may be
  347. learned through another protocol mechanism. 
  348.  
  349. When sources start sending to a multicast group, the first hop
  350. ESL-router sends an ESL-Register message to the RP(s) for that group.
  351. When a receiver joins an ESL multicast group, its first hop ESL router
  352. sends an ESL-Join message towards one of the RPs. If source-specific
  353. distribution trees are desired, the first hop ESL router for each
  354. member (receiver) eventually joins the source-rooted distribution tree
  355. for each source by sending an ESL-Join message towards the source and 
  356. after data packets are received on the new path, it sends 
  357. an IGMP prune message toward the RP (assuming these represent
  358. different uplinks/branches).  The state maintained in routers is the
  359. same as the forwarding information that is currently maintained by
  360. routers running existing IP multicast protocols such as MOSPF, i.e.,
  361. source (S), multicast address (G), outgoing interface (oif), incoming
  362. interface (iif). We refer to this forwarding information as the
  363. multicast forwarding entry for (S,G).  The  ESL messages sent upstream
  364. by receivers include an explicit list of the sources known to the
  365. downstream receivers (thus the name).
  366.  
  367.  
  368. 2.2 Design Tradeoffs
  369.  
  370. Referring back to our design objectives, we selected the ESL approach over 
  371. an alternative, source-initiated approach, where each receiver contacts 
  372. each source and each source sends out a message to the routers to install a 
  373. distribution tree from that source to all the listed receivers[ST-II]. The 
  374. source-initiated approach is less desirable because it a) requires each 
  375. source to deal with join requests from each receiver (or each receiver 
  376. aggregate such as a domain), and b) requires that member-domains be listed 
  377. explicitly. The last concern is the most significant because it means that 
  378. the source-initiated scheme's overhead increases with the number of 
  379. receivers (receiver domains) in the group. 
  380.  
  381. One limitation of the ESL approach, mentioned earlier, occurs when there 
  382. are asymmetric paths. This occurs when the unicast path from a given 
  383. receiver is different than the multicast path from the source to that 
  384. receiver. Since RPM is used, the path chosen is the one from receiver to 
  385. source. It is our opinion that this route asymmetry problem is NOT 
  386. critical. In the future, if routing protocols become more load-sensitive, 
  387. and as a result more routes are asymmetric due to asymmetric traffic 
  388. loading, we may need to rely on other aspects of the adaptive routing 
  389. service to address this problem.\Footnote{For example, if unicast routing 
  390. could provide a special QoS route whose characteristic was that it 
  391. represented the preferred path FROM the indicated destination, instead of 
  392. TO the destination, then the  ESL messages used in our protocol could be 
  393. sent using that QoS, and the deficiency described here would be avoided. } 
  394.  
  395. ESL avoids explicit enumeration of receivers, but does require enumeration 
  396. of sources. If there are very large numbers of sources sending to a group 
  397. but the sources' average data rates are low, then the group can be 
  398. supported with a shared tree instead which has less per-source overhead. If 
  399. shortest path trees are used then when the number of sources grows very 
  400. large, some form of aggregation or proxy mechanism will be needed; see 
  401. section 6. We selected this tradeoff because in many existing and 
  402. anticipated applications, the number of receivers is much larger than the 
  403. number of sources. And when the number of sources is very large, the 
  404. average data rate tends to be very low (e.g. resource discovery). 
  405.  
  406.  
  407. 3. Protocol Description
  408.  
  409. Below is a description of the protocol steps and messages.
  410.  
  411. 3.1 Overview
  412.  
  413. ESL-Join messages traveling up from receivers to the RP create a 
  414. RP-rooted distribution tree that is used to distribute data packets from 
  415. new sources to all receivers and from all sources to new receivers.
  416. ESL-Register messages traveling from sources to the RP causes the RP to 
  417. send  join messages upstream  to the sources and thereby create
  418. distribution paths from the sources to the RP-rooted distribution tree.
  419. In this way, a shared tree is formed between the sources and the RP
  420. and the RP  and receivers. 
  421.  
  422. If shortest path, source-specific, trees are to be used, then data packets 
  423. >from new sources will trigger ESL-Join messages to travel up from receivers 
  424. via their shortest paths to sources. 
  425.  
  426.             |                                          |
  427.             |** MR-1 ************ MR-2 ******** MR-3 --|
  428.             |      .                           . *@    |-- Receiver-1-Ga
  429.   Source-1 -|       .                         .  *@    |
  430.             |        .                       .   *@    |
  431.             |         .                     .    *@
  432.             |           RP .................    MR-8
  433.                       .                     .    *@
  434.                      .                       .   *@
  435.                     .                         .  *@
  436.             |      .                           . *@    |
  437.             |@@ MR-4 @@@@@@@@@@@@ MR-5 @@@@@@@@ MR-6 --|
  438.             |      \                           /       |-- Receiver-2-Ga
  439.   Source-2 -|       \                         /        |
  440.             |        \                       /         |
  441.             |         --------- MR-7 --------
  442.  
  443.  
  444. ... RP-rooted distribution tree
  445. *** Source-1 based distribution tree
  446. @@@ Source-2 based distribution tree
  447. MR  Multicast Router
  448.  
  449. 3.2   Receiver/Upstream messages
  450.  
  451. This section describes the sequence of messages sent  as receivers 
  452. join a group, as well as the actions taken to establish distribution 
  453. paths to the receivers. 
  454.  
  455. 1) Host sends IGMP-Report message identifying a particular group, G,
  456. in response to a directly-connected Router's IGMP-Query message. From
  457. this point on we refer to such a host as a receiver, R, (or member) of
  458. the group G.
  459.  
  460. 2) When a designated  router (DR) receives a report for a new group
  461. G it checks to see if it has RP address(es) associated with G. The
  462. mechanism for learning this  mapping of G to RP(s) is 
  463. somewhat orthogonal to the specification of this protocol; 
  464. however, we require some mechanism in order for the protocol to work. 
  465. At the very least this information must be manually configurable. In
  466. addition, as discussed in Section 7, we propose the use of a new
  467. IGMP-RP-report message that would allow hosts to inform their
  468. directly-connected ESL routers of G,RP(s) mappings. This is important
  469. for dynamic groups where hosts participate in special applications
  470. to advertise and learn of multicast addresses and their associated
  471. RP(s)
  472.  
  473. A DR will identify a new group (i.e., one for which it has
  474. no existing multicast entries) as needing ESL support by checking if
  475. there exists an RP mapping. If there is no RP mapping provided in IGMP
  476. report messages, and there is no mapping provided in the appropriate
  477. configuration file, then the router will assume that the group is NOT
  478. to be supported with ESL. Even when a group has an associated RP, it
  479. may be that some outgoing and incoming interfaces do not require ESL,
  480. but are handled using a dense mode scheme such as MOSPF, DVMRP, or
  481. Dense mode ESL. In this case the router will flag individual
  482. interfaces as dense or sparse mode, to allow differential treatment of
  483. different interfaces. For the sake of clarity, we will ignore these
  484. added complexities throughout most of the protocol description.
  485.  
  486. For the remainder of this description we will also assume a single RP just 
  487. for the sake of clarity. We describe the direct extensibility to operation 
  488. with multiple RPs later in the document. 
  489.  
  490. 3) The DR creates a multicast forwarding cache for (*,G) . The RP 
  491. address is included in a special record in the forwarding entry, so
  492. that it will be included in  upstream join messages. The outgoing
  493. interface is set to that over which  the IGMP report was received from
  494. the new member. The incoming interface is  set to the interface used
  495. to send unicast packets to the RP. A wildcard  (WC) bit is
  496. associated with this entry. 
  497.  
  498. The DR sets an RP-timer for this entry. The timer is reset each time  an
  499. RP-reachable message is received for *,G (see 3.3).
  500.  
  501.  
  502. 4) The router creates an ESL-Join message with the RP address in its
  503. join list with  the WC bit  set; nothing is listed in its
  504. prune list.  The WC bit indicates that the receiver expects to receive
  505. packets from new sources via this path and therefore upstream routers
  506. should create or add to *,G forwarding entries.  The WC bit also indicates
  507. that the particular IP address is being used as an RP and that the
  508. router with that address should send an RP-reachability message
  509. downstream; these messages are effectively sent periodically in
  510. response to the receipt of periodic join messages. The message is sent
  511. as an IP packet addressed to the next hop router upstream towards the
  512. RP; the payload contains the IGMP information Multicast-Address=G,
  513. ESL-join={WCbit}, ESL-prune=NULL.
  514.  
  515. 5) Each upstream router creates or updates its multicast forwarding
  516. entry for (*,G) when it receives an ESL-Join with the WC bit set.  The
  517. interface on which the ESL-Join message arrived is added to the list
  518. of outgoing interfaces for (*,G).  As a result each upstream router
  519. between the receiver and the RP sends an ESL-Join message in which the
  520. join list includes the RP and the WC bit.   The
  521. messages are sent using IP addressed to the next hop router used to
  522. reach the RP. The payload IGMP packet contains Multicast-Address=G,
  523. ESL-join={WCbit}, ESL-prune=NULL.
  524.  
  525. The RP recognizes its own address and does not attempt to send join 
  526. messages for this entry upstream. Because the RP recognizes itself as the 
  527. RP it knows to send RP-reachability messages in response to the periodic 
  528. join messages received from downstream. In addition, the incoming 
  529. interface in the RP's *,G entry is set to null.
  530.  
  531. 6) When an ESL-router has directly-connected members that want to join the 
  532. group with shortest paths, the router notices data
  533. packets for G that are NOT sourced by an address for which it has a
  534. multicast forwarding entry. The router initiates a new multicast
  535. forwarding entry for (Sn,G), clears the "SPT-bit" for that entry,  and sets 
  536. a timer for the S,G entry. 
  537.  
  538. The router also triggers the generation of IGMP messages upstream. For
  539. example, an ESL-Join message will be sent upstream to the best next
  540. hop towards the new source, Sn, with Sn in the join list:
  541. Multicast-Address=G, ESL-join={Sn}, ESL-prune=NULL.  The ESL-Join
  542. message that gets sent upstream toward the RP will have Sn in the
  543. prune list (at the point where the two upstream paths diverge) when the 
  544. SPT bit on the DR's S,G entry is set:
  545. Multicast-Address=G, ESL-join={RP,*}, ESL-prune={Sn}.  
  546.  
  547. In order to
  548. avoid missing data packets the DR should send the ESL message
  549. toward the new Sn before sending the prune message toward the RP. The 
  550. DR knows it is time to send the prune when it starts receiving
  551. new packets from Sn on the interface used to reach Sn.  Therefore Sn is 
  552. not included in the prune list sent toward the RP until the SPT bit is 
  553. set for the S,G  entry.  
  554.  
  555. When the Sn,G  entry is created, the outgoing interface list is copied 
  556. >from *,G. In this way when a data packet from Sn arrives and matches on 
  557. this entry, all receivers will continue to receive sources packets along 
  558. this path unless and until the receivers choose to prune themselves.
  559.  
  560. Note that a DR may adopt a policy of not setting up a S,G entry
  561. (and therefore not sending an ESL-Join message toward the source)
  562. until it has received m data packets from the source within some
  563. interval of n seconds. This would eliminate the overhead of S,G state
  564. upstream when small numbers of packets are sent sporadically. However,
  565. data packets distributed in this manner may be delivered over the
  566. suboptimal paths of the shared RP tree.
  567.  
  568. The DR may also choose to remain on the RP-distribution tree 
  569. indefinitely instead of moving to the shortest path tree.   
  570.  
  571. 7) In the steady state each router sends periodic refreshes of ESL messages 
  572. upstream to each of the next hop routers that is en route to each source, 
  573. S, for which it has a multicast forwarding entry (S,G); as well as for 
  574. the RP listed in the (*,G) entry. These messages are 
  575. sent periodically to capture state, topology, and membership changes. An 
  576. ESL message is also sent on an event-triggered basis each time a new 
  577. forwarding entry is established for some new (Sn,G) (note that some damping 
  578. function may be applied, e.g., a merge time). Optionally the ESL message 
  579. could contain only the incremental information about the new source and 
  580. only be sent to the next hop toward that source. ESL messages are not 
  581. sent reliably; lost packets will be recovered from at the next periodic 
  582. refresh time. 
  583.  
  584. The  join list in an ESL-Join message sent to a neighboring router, X,
  585. includes an address for each source, S, for which:  
  586.     1) there is a multicast forwarding entry (S,G), or S is listed as the 
  587.     RP-entry for (*,G); AND, 
  588.   
  589.     2) X is the next-hop router  used to send unicast packets to S
  590.     (or if S is a directly connected host, then include S if X is
  591.     the DR for S's LAN), AND,  
  592.  
  593.     3) the outgoing interface list in the forwarding entry is NOT null. 
  594.     
  595.  
  596. The prune list in an ESL-Join message sent to a neighboring router Y, 
  597. includes an address for each  source, S, for which: 
  598.     1) there is a S,G multicast forwarding entry with, the SPT bit set,  a 
  599.     null outgoing      interface list and Y is the next hop to reach S (or, if 
  600.     S is a     directly connected host, then include S if Y is the DR for S's
  601.     LAN), and  
  602.     
  603. In addition, if Y is the next hop used to reach the RP, the prune list also
  604. includes an address for each source S for which:
  605.      1) there is a S,G multicast forwarding entry, the SPT bit is set,  and 
  606.      Y is not the next hop  used to reach S.
  607.  
  608. ESL-Join messages are sent periodically and the join and 
  609. prune lists are populated as specified above. In addition four
  610. events will trigger ESL-Join messages:
  611.     1) receipt of an IGMP report message for a new group (i.e., one for which 
  612.     the receiving router does not have any S,G or *,G entries) will trigger an 
  613.     ESL-Join message toward the RP with the RP address and WC bit set in the 
  614.     join list, and 
  615.  
  616.     2) receipt of an ESL-Join message for an S,G pair (including *,G) for 
  617.     which there is no current forwarding entries, will trigger an ESL-Join 
  618.     message toward S (or RP) with S (or RP with WC bit set) in the join list. 
  619.  
  620.     3) receipt of packet on the NEW S,G entry over the appropriate incoming 
  621.     interface triggers a) setting  of the SPT bit,  and b) sending  a prune 
  622.     message up the  RP tree.
  623.  
  624.     4) when the outgoing interface list becomes null, indicating no more 
  625.     downstream receivers, a prune is sent upstream. We do not trigger prunes 
  626.     based on data packets. Data packets that arrive on the wrong incoming 
  627.     interface are silently dropped. 
  628.  
  629. Note that each source address listed in an ESL may be a specific IP
  630. address, or may indicate a subnet or a general aggregate. To support
  631. this generality in the future each ESL entry is represented by a {mask length,
  632. Address} pair.  The distribution of mask information is described in 
  633. Section 3.3 where reachability messages are described. 
  634. The potential for using proxy or aggregate information is described 
  635. briefly in Section 7. 
  636.  
  637.  
  638. 8) Each router that receives an  ESL message processes it as follows: 
  639.  
  640.     a) notes the interface on which the ESL-Join message arrived, call it I. 
  641.  
  642.     b) if one of the  Si  has has the WC bit set, and a *,G forwarding entry 
  643.     already exists, add I to the *,G forwarding entry and set the timer.  
  644.     If I is a new interface  in the *,G forwarding entry add I to all other 
  645.     existing Si,G forwarding  entries also, with the exception of those Si  
  646.     listed in the prune list. If the value of Si with the WC bit set is 
  647.     different from the  RP-entry listed in the existing *,G forwarding entry 
  648.     then: 
  649.  
  650.         i. if Si is greater than the listed RP-entry value,
  651.         set RP-entry to Si,  
  652.  
  653.         ii. if Si is less than the listed RP-entry value,
  654.         leave the RP-entry as is.  Do not reset the RP-entry
  655.         timer. (These steps are taken so that in the case of
  656.         multiple RPs, loops can be avoided in the RP-based
  657.         shared tree. This is achieved by making sure that
  658.         within any branch of the shared tree, routers will
  659.         converge on using a single RP until it fails.)  
  660.  
  661.     The incoming interface is set to the RPF interface to the RP in the *,G 
  662.     forwarding entries. 
  663.  
  664.     c) for any Si without the WC bit set that is included in the ESL-join 
  665.     list, for which there is NO existing (Si,G) forwarding entry, the router 
  666.     initiates one. The outgoing interface is set to I, and the incoming 
  667.     interface is set to the interface used to send unicast packets to Si. IF 
  668.     the interface used to reach Si is the same as the outgoing interface being 
  669.     built (i.e., the interface on which the ESL-Join  message arrived) this 
  670.     represents an error and the join should not be processed. 
  671.  
  672.     d) for any Si, included in the ESL-join list, for which there IS an 
  673.     existing (Si,G) forwarding entry, the router adds I to the
  674.     list of outgoing interfaces, IF I is not the same as the
  675.     existing incoming interface; If I is the same as the existing
  676.         incoming interface, the existing incoming  
  677.     interface takes precedence and the join is dropped. 
  678.  
  679.     e) for each Si, included in the ESL-prune list, for which
  680.     there is an existing (Si,G) forwarding entry, the router
  681.     deletes I from the list of outgoing  
  682.     interfaces. If the router has a current *,G forwarding entry, 
  683.     and if an Si,G entry also exists then the 
  684.     forwarding entry is maintained for (Si,G) even if its outgoing
  685.     interface list is NULL. If there is no (Si,G) entry, then one
  686.     is created with the outgoing interface list copied from *,G, and
  687.     the interface on which the prune was received is deleted. This
  688.     acts as a negative cache so that packets  from Si are  
  689.     not forwarded to the pruning receiver. 
  690.  
  691. 9) A timer is maintained for each outgoing interface listed in each S,G 
  692. or *,G entry. The timer is set when the interface is added. 
  693. The timer is reset each time an ESL-join message is received on that 
  694. interface for that forwarding entry (i.e., S,G or *,G).
  695.  
  696. When a timer expires, the corresponding outgoing interface is deleted 
  697. >from the outgoing interface list. When the outgoing interface list is 
  698. null a prune message is sent upstream and the entry is deleted after 3
  699. times the refresh period (i.e., 180 seconds).
  700.  
  701.  
  702. 3.3 Source/Downstream messages
  703.  
  704. Two types of messages are sent downstream: Registers and RP-reachabilty 
  705. messages.
  706.  
  707.  
  708. 3.3.1 Register messages
  709.  
  710. 1) When a source, S, wishes to send to a multicast group, G, for the 
  711. first time, S simply sends a data packet addressed to the group.
  712.  
  713. 2) When a data packet from S addressed to G arrives at the first hop ESL 
  714. designated router (DR), and the DR has no current forwarding entry for 
  715. (S,G), the router looks up the RP(s) address(es) associated with G. 
  716.  
  717. The RP information may be configured or may be provided by a new 
  718. IGMP-RP-report message. If no RP information exists, then the router 
  719. assumes the group is handled as a dense group and simply sends the data 
  720. packets out all non-incoming interfaces. The RP mapping function is only 
  721. performed by the the first ESL router to see the source's packets before 
  722. the *,G entry is established; i.e, the mapping is not performed by each ESL 
  723. router on a distribution tree. The RP information should be cached for 
  724. future use. 
  725.  
  726. 3) The router sends an ESL-Register message to the RP. The message 
  727. indicates the group for which the  source is registering, and has the WC 
  728. bit set. Mask information for the source may be included. 
  729.  
  730. The original data packet is encapsulated inside the Register 
  731. packet. 
  732.  
  733. The message is  sent as a unicast packet  to the RP; it is not processed
  734. by  the intermediate routers. If there are multiple RPs associated with 
  735. the multicast group, then the source sends a Register message to each of them. 
  736.  
  737. Subsequent data packets sent to the same group will trigger the same 
  738. action until an S,G entry is set up in the first hop router in response 
  739. to a join message received from downstream.  The RP information should be
  740. cached so that multiple lookups can be avoided for subsequent data 
  741. packets sent to the same group. 
  742.  
  743.  
  744. 4) When a router (i.e., the RP) receives a Register message, the
  745. router 
  746.     a) decapsulates the data packet, and forwards it according its local 
  747.     *,G forwarding entry,  and 
  748.     
  749.      b) sets up an S,G forwarding entry with the outgoing interface list copied 
  750.     from the *,G outgoing interface list. The S,G entry is set up using the 
  751.     mask information, if provided, in the Register message. A
  752.     timer is set for the S,G entry.
  753.  
  754.  
  755. The S,G entry causes the RP to send an ESL-Join message for the
  756. indicated group toward the source of the Register message. The
  757. ESL-Join message includes the source's address and mask information;
  758. note the source here is the source of the Register message, i.e., the
  759. source-host's directly-connected ESL router, NOT the source host
  760. itself.  This message is triggered and processed like any other
  761. ESL-Join message by the intermediate routers, which either create or
  762. augment the S,G forwarding state in exactly the same way as was
  763. described in 3.2: the ESL-Join message's incoming interface is added
  764. to the outgoing interface list, and the incoming interface for the
  765. entry is set to the interface used to reach the source.
  766.  
  767. Note that an RP may adopt a policy of not setting up a S,G entry (and 
  768. therefore not sending an ESL-Join message toward the source) until it has 
  769. received m Register messages (with encapsulated data packets) from the 
  770. source within som interval of n seconds. This would eliminate the 
  771. overhead of S,G state upstream of the RP when small numbers of packets 
  772. are sent sporadically. However, data packets distributed in this manner 
  773. may be delivered on very suboptimal paths because they travel all the way 
  774. to the RP before being multicasted. 
  775.  
  776. 5) Once the ESL-Join messages have propagated upstream from the RP, data 
  777. packets from the source will follow the S,G distribution path state 
  778. established. The packets will travel to the receivers via the 
  779. distribution paths established  by the ESL-Join messages sent upstream 
  780. >from receivers toward the RP.  Multicast packets will arrive at some 
  781. receivers before reaching the RP if  the receivers and the source are 
  782. both "upstream" of the RP.  
  783.  
  784. When the receivers initiate shortest-path distribution, additional 
  785. outgoing interfaces will be added to the S,G entry and the data 
  786. packets will be delivered via the shortest paths to receivers. 
  787.  
  788. 6)  Data packets will continue to travel from the source to the RP(s)  in
  789. order to reach new receivers. Similarly, receivers continue to receive
  790. some data packets via the RP tree in order to pick up new senders. 
  791. However, when source-specific tree distribution is used,  most data
  792. packets will arrive at receivers over a shortest path  
  793. distribution tree. 
  794.  
  795. 7) Data packets travel from the source via the reverse shortest path
  796. tree rooted in the source because routers between the source and the
  797. receiver have a multicast forwarding entry for (Sn,G) whose outgoing
  798. interface list includes all the interfaces on which the routers
  799. received ESL-Join messages from downstream receivers.
  800.  
  801. 3.3.2 RP-Reachability Messages
  802.  
  803. 1) A router starts sending periodic "RP-reachability" messages
  804. downstream when:
  805.     (a) it receives an ESL-Join message with its own
  806.     address AND WC-bit set in the join list, and 
  807.     (b) the incoming interface on its (*,G) entry is Null.
  808. The first condition is to make sure that it is an RP.
  809. The second condition is to make sure that only the "dominant" RP 
  810. will send RP-reachability messages, so the traffic can be minimized.
  811.  
  812. This obviates the need to do any kind of special configuration of RPs;
  813. any router can be an RP since RP behavior is triggered by the protocol
  814. itself.  A router is responsible for initiating RP-reachability messages
  815. to downstream nodes if it has a *,G entry with a NULL incoming interface.
  816.  
  817. 2) The router sends the periodic RP-reachability messages out all the 
  818. outgoing interfaces in the *,G entry. The period for this message is 90 
  819. seconds. The messages are addressed to the 224.0.0.1 class D address and the 
  820. message contents includes the RP and G  and an optional list of 
  821. source, mask information. 
  822.  
  823.  
  824. 2) When a router receives an RP-reachability message for a group G it 
  825. must compare the RP address listed in the message to the RP address 
  826. listed in the current *,G RP-entry. 
  827.  
  828. If the RP listed in the message is greater than the RP listed in the *,G 
  829. RP-entry, and if the next hop used to reach the listed RP is the same as 
  830. the next hop used to reach the RP-entry, then the router replaces its 
  831. current RP-entry with the RP address from the RP-reachability message 
  832.  
  833. This is necessary to eliminate routing loops that can occur in some 
  834. instances when downstream receivers select different upstream RPs and the 
  835. RP-centerod distribution trees overlap.
  836.  
  837. If the RP listed in the message is less than the RP listed in the *,G
  838. RP-entry, OR if the RP-reachability message did not come in on the RPF
  839. interface to the RP listed in the message, then the message is not
  840. forwarded. 
  841.  
  842. In more detail, when a router receives an RP-reachability message it
  843. does the following; assume that router X receives an RP-reachability message
  844. of RP1 from incoming interface I. 
  845.     1. Perform RPF check. If I is not the best next hop to RP1, drop this
  846.     RP-reachability message.  
  847.     2. Else, If the incoming interface of (*,G) is not NULL and not I,
  848.     drop the RP-reachability message.
  849.     3. If the incoming interface of (*,G) is I, 
  850.     compare  RP1 with the address in RP-entry, say RP2.
  851.     If RP1 is larger than RP2, set RP-entry to RP1 and propagate
  852.     the RP-reachability message downstream. Otherwise, drop the
  853.     RP-reachability message. 
  854.     4. If the incoming interface of (*,G) is NULL and WC-bit is set
  855.     then this router is currently acting as an RP for G. In this case, 
  856.     compare  RP1 with X. If RP1 is larger than X, set RP-entry to RP1, set
  857.     the incoming interface to the RPF interfac used to reach RP1, and
  858.     clear the WC-bit for that router. Also, propagate RP-reachability
  859.     message downstream. 
  860.     Otherwise, if RP1 is less than X, drop the RP-reachability message.
  861.  
  862. 4) If there are any *,G  entries the message is forwarded with
  863. the same  class D address out the outgoing interfaces from the
  864. G entries.  If a downstream router does not have any  *,G
  865. entries then the packet is dropped. 
  866.  
  867. When DRs with directly connected group members receive this message 
  868. they reset their RP-timers on  the RP-entry in *,G. This allows 
  869. group-members' directly-connected ESL routers to  detect when an RP 
  870. becomes unreachable and trigger a join toward an  alternate RP, if one
  871. exists.   
  872.  
  873. 5) The RP-reachability message may optionally contain Source/Mask
  874. information for (S,G) entries maintained by the RP. 
  875. This mask information is optionally obtained via Register
  876. messages sent to the RP by sources' first hop routers. The
  877. masking information can be  used by last-hop ESL routers to
  878. consolidate S,G entries, and  consequently ESL-Join lists
  879. sent upstream.  
  880.  
  881. 3.4 Multicast Data Packet Processing.
  882.  
  883. Data packets are processed in a similar manner to existing multicast 
  884. schemes. An incoming interface check is performed and if it fails the 
  885. packet is dropped, otherwise the packet is forwarded to all the interfaces 
  886. listed in the outgoing interface list (whose timers have not expired). 
  887. There are two exception actions that are introduced if packets are to be 
  888. delivered continuously, even during the transition from a shared to 
  889. shortest path tree. First, when a data packet matches on an S,G entry with 
  890. a cleared SPT bit, if the packet does not match the incoming interface for 
  891. that entry, then the packet is forwarded according to the *,G entry; i.e., 
  892. it is sent to the outgoing interfaces listed in *,G IF the incoming 
  893. interface matches that of the *,G. In addition, when a data packet matches 
  894. on an S,G entry with a cleared SPT bit, AND the incoming interface of the 
  895. packet matches that of the S,G entry, then the packet is forwarded and the 
  896. SPT bit is set for that entry. 
  897.  
  898. Data packets never trigger prunes . Data packets may trigger 
  899. actions which in turn trigger prunes. In particular data packets from a 
  900. new source can trigger creation of a new S,G forwarding entry. This 
  901. causes S to be included in the prune list in a triggered ESL messages toward 
  902. the RP; just as it causes S to be included in the join list in a 
  903. triggered ESL message toward the source.
  904.  
  905.  
  906. 3.5 Packet Types
  907.  
  908. RFC 1112 specifies two types of IGMP packets for hosts and routers
  909. to convey multicast group membership and reachability information.
  910.  
  911. An IGMP Query packet is transmitted periodically by routers to ask
  912. hosts to report which multicast groups they are members of. An IGMP
  913. Report packet is transmitted by hosts in response to received
  914. Queries advertising group membership.
  915.  
  916. This document introduces new types of IGMP packets that are used
  917. by ESL routers. The following packet format is used:
  918.  
  919.        0                   1                   2                   3
  920.        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  921.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  922.       |Version| Type  |      Code     |           Checksum            |
  923.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  924.       |                         Group Address                         |
  925.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  926.  
  927. %%DE  Dino, please add Version/Type/TOS/Code that you proposed in comments
  928.  
  929.       Version
  930.          This memo specifies version 1 of IGMP.  Version 0 is specified
  931.          in RFC-988 and is now obsolete.
  932.  
  933.       Type
  934.          There are five types of IGMP messages:
  935.  
  936.             1  = Host Membership Query
  937.             2  = Host Membership Report
  938.         3  = Router DVMRP Messages
  939.         4  = Router ESL Messages
  940.  
  941.       Code
  942.          Codes for specific message types. Used only by DVMRP and ESL.
  943.      ESL codes are:
  944.  
  945.          0  = Query
  946.          1  = Register
  947.          2  = Join/Prune
  948.          3  = RP-Reachable
  949.          4  = Assert        dense-mode ESL only
  950.          5  = Mode          dual-mode ESL only
  951.          6  = Mode-Ack      dual-mode ESL only
  952.  
  953.       Checksum
  954.          The checksum is the 16-bit one's complement of the one's
  955.          complement sum of the entire IGMP message.  For computing
  956.          the checksum, the checksum field is zeroed.
  957.  
  958.       Group Address
  959.          In a Host Membership Query message, the group address field
  960.          is zeroed when sent, ignored when received.
  961.  
  962.          In a Host Membership Report message, the group address field
  963.          holds the IP host group address of the group being reported.
  964.  
  965.          In a Register, Join/Prune, Query, and RP-Reachable message, 
  966.      the group address field is zeroed when sent, ignored when
  967.     received.
  968.  
  969. 3.5.1 ESL-Register, ESL-Join, and Assert messages.
  970.  
  971. The Register, Join/Prune and Assert messages have additional information
  972. appended to the fixed header:
  973.       
  974.  
  975.        0                   1                   2                   3
  976.        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  977.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  978.       |      Reserved    | Maddr Length  |  Addr Length  |  Num groups   |
  979.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  980.       |                   Multicast Group Address-1                   |
  981.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  982.       |     Number of Join Sources    |    Number of Prune Sources    |
  983.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  984.       |                   Join Source Address-1                       |
  985.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  986.       |                               .                               |
  987.       |                               .                               |
  988.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  989.       |                   Join Source Address-n                       |
  990.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  991.       |                   Prune Source Address-1                      |
  992.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  993.       |                               .                               |
  994.       |                               .                               |
  995.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  996.       |                   Prune Source Address-n                      |
  997.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  998.       |                               .                               |
  999.       |                               .                               |
  1000.       |                               .                               |
  1001.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1002.       |                   Multicast Group Address-n                   |
  1003.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1004.       |     Number of Join Sources    |    Number of Prune Sources    |
  1005.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1006.       |                   Join Source Address-1                       |
  1007.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1008.       |                               .                               |
  1009.       |                               .                               |
  1010.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1011.       |                   Join Source Address-n                       |
  1012.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1013.       |                   Prune Source Address-1                      |
  1014.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1015.       |                               .                               |
  1016.       |                               .                               |
  1017.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1018.       |                   Prune Source Address-n                      |
  1019.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1020.  
  1021.       Reserved
  1022.          Unused field, zeroed when sent, ignored when received.
  1023.  
  1024.       Addr Length
  1025.          The length in bytes of the encoded source addresses in the
  1026.      Join and Prune lists.
  1027.  
  1028.       Maddr Length
  1029.      The length in bytes of the encoded multicast addresses.
  1030.  
  1031.       Num Groups
  1032.           The number of multicast group sets contained in the message.
  1033.           
  1034.       Multicast group address
  1035.           For IP, it is a 4-byte Class D address.
  1036.  
  1037.       Number of Join Sources
  1038.           Number of join source addresses listed for a given group.
  1039.  
  1040.       Join Source Address-1 - n   
  1041.           This list contains the sources that the sending router will forward
  1042.           multicast datagrams for if received on the interface this
  1043.           message is sent on. The address 0.0.0.0 indicates a join for
  1044.           all sources.
  1045.  
  1046.           For a Register message, the source address specifies the
  1047.           address(es) of the Rendezvous Point(s).
  1048.  
  1049.       Number of Prune Sources
  1050.           Number of prune source addresses listed for a given group. 
  1051.  
  1052.       Prune Source Address-1 - n
  1053.           This list contains the sources that the sending router does
  1054.           not want to forward multicast datagrams for when received on the
  1055.           interface this message is sent on. The address 0.0.0.0
  1056.           indicates a prune for all sources.
  1057.  
  1058. In Router messages, all source addresses will have the following
  1059. format:
  1060.  
  1061.       
  1062.         <WC-bit><Mask Length><Address>
  1063.  
  1064.         <WC-bit> is a 1 bit value. If 1, packets should propagate to
  1065.         this address and a wildcard multicast entry should be built
  1066.         with interface information based on the receiving and sending
  1067.         interface for Router messages. If 0, the <Address> is a source
  1068.         address. The Address should be added to the address list
  1069.         associated with the wildcard multicast entry for the group.
  1070.  
  1071.         <Mask Length> is 7 bits. The value is the number of contiguous bits 
  1072.         left justified used as a mask which describes the <Address>.
  1073.  
  1074.         <Address> is the length indicated from the "Addr Length" field 
  1075.         at the beginning of the header. The <Mask Length> must be less than
  1076.         or equal to "Addr Length" * 8.
  1077.  
  1078.       A source address could be a host IP address:
  1079.  
  1080.       <0><32><192.1.1.17>
  1081.  
  1082.       A source address could be the RP's IP address:
  1083.  
  1084.       <1><32><131.108.13.111>
  1085.  
  1086.       A source address could be a subnet address:
  1087.  
  1088.       <0><28><192.1.1.16>
  1089.  
  1090.       A source address could be a general aggregate:
  1091.  
  1092.       <0><16><192.1.0.0>
  1093.  
  1094. ESL messages are always sent as unicast IP addressed packets. These
  1095. messages are sent towards the direction of the Join and Prune source
  1096. addresses. This is achieved by doing a route lookup for each source
  1097. address and IP addressing it to the next-hop router along the path to
  1098. the source. Each router along the way does this until the destination
  1099. is reached.
  1100.  
  1101. %df - is this still true?
  1102. Router messages may be data linked multicast when transmitted on
  1103. subnetworks that support multicast. 
  1104.  
  1105. 3.5.2 RP-reachability message
  1106.  
  1107. The RP-reachable packet format is as follows:
  1108.  
  1109.        0                   1                   2                   3
  1110.        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  1111.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1112.       |Version| Type  |     Code      |           Checksum            |
  1113.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1114.       |                         Group Address                         |
  1115.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1116.       |                          RP Address                           |
  1117.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1118.       |                       Number of Entries                       |
  1119.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1120.       |  Mask Length  |        Address ...                            |
  1121.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1122.                                       .
  1123.                                       .
  1124.                                       .
  1125.  
  1126.  
  1127.       Group Address
  1128.           Group address associated with RP.
  1129.  
  1130.       RP Address
  1131.           The Rendezvous Point IP address of the sender.     
  1132.  
  1133.       Number of Entries
  1134.     The number of {Mask Length, Address} entries in the message. This
  1135.       value is 0 if no addresses are included.
  1136.  
  1137.       Mask Length
  1138.     Number of bits in the network mask for the corresponding address.
  1139.  
  1140.       Address
  1141.     4-byte IP address. The corresponding zero bits in the mask should
  1142.         be set to zero in the address.
  1143.    
  1144.  
  1145. Each RP will send RP-Reachable messages to all routers on its
  1146. distribution tree for a particular group. These messages are sent
  1147. so routers can detect that an RP is unreachable. Routers that have
  1148. attached host members for a group will process the message. On a
  1149. multi-home stub subnetwork, the DR is responsible for processing
  1150. the message. A router that processes the message is one that
  1151. updates the RP address timer to indicate that the RP is still
  1152. alive. Other routers that are on the RP-distribution tree
  1153. propagate the message.
  1154.  
  1155. The RPs will address the RP-Reachable messages to 224.0.0.1.
  1156. Routers that have state for the group with respect to the RP
  1157. distribution tree will propagate the message. Otherwise, the message
  1158. is discarded.
  1159.  
  1160. If an RP address timer expires, the DR should attempt to
  1161. send an ESL join message toward an alternate RP provided for
  1162. that group if one is available.   
  1163.  
  1164. 3.5.3 Other message types
  1165.           
  1166. In a future version of this document we will specify a new
  1167. IGMP message type that will allows hosts to advertise a list of 1 to n
  1168. RP addresses associated with a particular group address.          
  1169.  
  1170. 3.5.4 Examples 
  1171.  
  1172. Following are examples of source address encodings in Register, Join/Prune,
  1173. and RP-reachability messages:
  1174.  
  1175. Register scenario: 
  1176.     A host (131.108.1.1) sends a multicast datagram to 224.1.1.1. The
  1177.     first hop designated router (131.108.1.2) for the attached LAN, 
  1178.         sends an ESL-Register message to the RP (131.108.10.2). The multicast
  1179.     datagram is encapsulated in the Register message. 
  1180.  
  1181.     IP Header:
  1182.         Source IP address:      131.108.1.2
  1183.         Destination IP address: 131.108.10.2
  1184.     IGMP Header:
  1185.         IGMP Type:              ESL
  1186.         IGMP Code:              Register
  1187.         Group Address:          0.0.0.0
  1188.         ESL Header:
  1189.         Maddr Length:           4
  1190.         Addr Length:            4
  1191.         Num Groups:             1
  1192.         Multicast Group:        224.1.1.1
  1193.         # Join/Prune Sources:   1/0
  1194.         WC-bit:                 0
  1195.             Mask Length:            24
  1196.         Address:                131.108.1.0            
  1197.     Encapsulated datagram:
  1198.         Source IP address:      131.108.1.1
  1199.         Destination IP address: 224.1.1.1
  1200.  
  1201. Join scenario:
  1202.     The RP (131.108.10.2) sends an ESL-Join upstream towards the source
  1203.     (131.108.1.0) in response to the above Register message recieived.
  1204.         The RP's next-hop to reach 131.08.1.0 is 131.08.20.2.
  1205.  
  1206.     IP Header:
  1207.         Source IP address:      131.108.10.2
  1208.         Destination IP address: 131.108.20.2
  1209.     IGMP Header:
  1210.         IGMP Type:              ESL
  1211.         IGMP Code:              Join/Prune
  1212.         Group Address:          0.0.0.0
  1213.         ESL Header:
  1214.         Maddr Length:           4
  1215.         Addr Length:            4
  1216.         Num Groups:             1
  1217.         Multicast Group:        224.1.1.1
  1218.         # Join/Prune Sources:   1/0
  1219.         WC-bit:                 0
  1220.             Mask Length:            24
  1221.         Address:                131.108.1.0            
  1222.  
  1223. RP-reachability scenario:
  1224.     Now that 131.108.10.2 knows it is an RP (because it received a 
  1225.     Register message), it must send ESL RP-Reachability messages
  1226.     downstream on the RP-distribution tree for 224.1.1.1. It will
  1227.     send the following packet on all outgoing interfaces of the
  1228.     (*, 224.1.1.1) entry. Each router on the path will build a new
  1229.     IP header with its own IP address as the source IP address.
  1230.  
  1231.     IP Header:
  1232.         Source IP address:      131.108.10.2
  1233.         Destination IP address: 224.0.0.1
  1234.     IGMP Header:
  1235.         IGMP Type:              ESL
  1236.         IGMP Code:              RP-Reachability
  1237.         Group Address:          224.1.1.1
  1238.         ESL Header:
  1239.         RP Address:             131.108.10.2
  1240.         Number of Entries:      1
  1241.             Mask Length:            24
  1242.         Address:                131.108.1.0
  1243.  
  1244.  
  1245.  
  1246. 4. Robustness Features
  1247.  
  1248. 4.1 Lost  ESL messages
  1249.  
  1250. The protocol is fairly robust to lost control messages. 
  1251. If an ESL-Register message gets lost then data packets will continue to 
  1252. be encapsulated in subsequent ESL-Register messages until the RP 
  1253. initializes an S,G entry and the associated ESL-Join messages 
  1254. propagate up to the Source. 
  1255.  
  1256. If an ESL-Join   message is lost then for the remainder of 
  1257. the refresh period, packets will not be forwarded on the new path, or 
  1258. will continue to be  forwarded until the refresh is sent. 
  1259.  
  1260. %%Editorial note: we are not at all fixed on these timer values...
  1261. It is recommended that ESL  messages be transmitted at a
  1262. rate of 60 seconds. Information that is cached should be timed out
  1263. after 3 times the transmission period if no ESL message for the entries
  1264. have been received. When a forwarding entry has no more outgoing
  1265. interfaces it is deleted and a prune can be sent upstream (or the
  1266. router can wait until the next period when the ESL list will no longer
  1267. include the Source for the deleted entry and the state will eventually
  1268. be timed out upstream). 
  1269.  
  1270. 4.1 Multiple Rendezvous Points and RP failure scenarios
  1271.  
  1272. If there is one RP then there is no concern about sources and
  1273. receivers actually being able to rendezvous, but there is a
  1274. reliability issue. If there are more than one RPs then each receiver
  1275. still joins to a single RP, but each source must register to EACH and
  1276. EVERY RP. In other words there are multiple RP distribution trees, and
  1277. so long as each source sends its packets to all of them, receivers
  1278. need only join to one.
  1279.  
  1280. When the RP fails or becomes unreachable by receivers, members who have 
  1281. already joined will continue to receive packets from sources that had 
  1282. previously sent to the group and for which the receivers had already 
  1283. switched to the SPT (assuming the SPT is not affected by the same failure 
  1284. as makes the RP unreachable). However, new members will send toward the 
  1285. unreachable RP and will NOT be successfully joined to the group unless 
  1286. their join packets reach existing SPTs of the sources before they reach the 
  1287. RP. New sources will attempt to register and send to the RP. Their packets 
  1288. will either not arrive at the RP in which case they will only be forwarded 
  1289. to receivers who are upstream of the RP with respect to the source, or
  1290. their packets  will get to the RP but will not reach downstream
  1291. receivers. In the latter  case, the SPT from the source to receivers
  1292. will never be set up even if the  paths that make up the SPT are 
  1293. available. This leads to the motivation for employing multiple RPs.  
  1294.  
  1295. Unreachable RPs are detected using the RP reachability message. When a 
  1296. *,G entry is established by a router with local members, a timer is set. 
  1297. The timer is reset each time an RP reachability message is received. If this 
  1298. timer expires, the router looks up an alternate RP for the group, sends a 
  1299. join toward the new RP. A new *,G entry is established with the incoming 
  1300. interface set to the interface used to reach the new RP. The outgoing 
  1301. interface list includes only those interfaces on which IGMP Reports for 
  1302. the group were received. (Other outgoing interfaces may no longer be 
  1303. valid since the router in question may not be on the shortest path 
  1304. between the downstream branch and the new RP. If the router is on this 
  1305. shortest path as well, it will eventually receive an explicit join from 
  1306. that downstream branch as the last hop routers take the same action).
  1307.  
  1308. When multiple RPs are used, each source registers and sends data
  1309. packets towards each of the RPs, but Receivers only join toward a
  1310. single RP.  If one of the RPs fails, receivers that joined to that RP
  1311. will stop receiving RP-reachability messages and will start sending
  1312. joins to one of the alternative RPs. Sources do not need to take
  1313. special action. When an RP is unreachable it will not receive the
  1314. source's Register messages and therefore will not respond with joins
  1315. and so the outgoing interfaces in *,G pointing toward the unreachable
  1316. RP will time out; without any explicit action on the part of the
  1317. source.
  1318.  
  1319. Because each receiver's directly connected router  selects an RP 
  1320. independently, it is possible for routers on the same part of the 
  1321. distribution tree to specify different RPs while both are still 
  1322. available. This can lead to looping in some topologies. To avoid looping, 
  1323. RP address information carried in ESL-Join and RP-reachability messages is 
  1324. examined to converge to a common RP (the larger numbered RP dominates). 
  1325.  
  1326.  
  1327. 4.2 Unicast routing changes
  1328.  
  1329.  
  1330. When unicast routing changes an RPF check is done and all affected expected 
  1331. incoming interfaces are updated. If the new incoming interface appears in 
  1332. the outgoing interface list, it is deleted from the outgoing list. The 
  1333. previous incoming interface may be added to the outgoing interface list by 
  1334. a subsequent join from downstream. Joins received on the current incoming 
  1335. interface are ignored. Joins received on new interfaces or existing 
  1336. outgoing interfaces are not ignored. Other outgoing interfaces are left as 
  1337. is until they are explicitly pruned by downstream routers or are timed out 
  1338. due to lack of appropriate join messages. 
  1339.  
  1340. The ESL-router must send an ESL-Join message out its new interface to
  1341. inform upstream routers that it expects multicast datagrams over the
  1342. interface. It must send an ESL-Prune message out the old interface, if
  1343. the link is operational, to inform upstream routers that this part of
  1344. the distribution tree is going away.
  1345.  
  1346. If the unicast route goes unreachable, all multicast entries for (S,Gi)
  1347. should be modified to have null outgoing interface lists, however the
  1348. entries should not be deleted immediately; this causes periodic
  1349. prunes to be sent and multicast packets to be discarded. The entry
  1350. should be kept alive for the remainder of the timeout lifetime.  This
  1351. helps to eliminate transient multicast routing forwarding loops. If the
  1352. unicast route has a new next-hop interface, the (S,Gi) entries must be
  1353. updated.
  1354.  
  1355.  
  1356. The following diagram shows how a multicast forwarding loop can be
  1357. avoided. Assume all LANs have members for a given group. The arrows
  1358. represent the expected interface each router will receive multicast
  1359. datagrams on, as well as the outgoing interfaces with respect to Source.
  1360.  
  1361.      ----------      ----------
  1362.          |               |
  1363.      ^               ^
  1364.        +----+         +----+
  1365.        | R1 | >-----> | R2 |      
  1366.        +----+         +----+
  1367.         ^  v            |
  1368.         |  |            |
  1369.         |  |            |      |
  1370.         |  |          +----+   |
  1371.         |  +--------> | R3 | >-|
  1372.         |             +----+   |
  1373.         |               |      |
  1374.         |               |
  1375.        Source   --------+
  1376.  
  1377. If the path to Source changes, R1 and R3 may converge on the new path
  1378. before R2, e.g.,  R1 uses its link to R3 as its expected incoming
  1379. interface and R3 uses its new shortest path link to Source. In this
  1380. state,
  1381.  
  1382.      ----------      ----------
  1383.          |               |
  1384.      ^               ^
  1385.        +----+         +----+
  1386.        | R1 | >-----> | R2 |      
  1387.        +----+         +----+
  1388.         |  ^            |
  1389.         |  |            |
  1390.         |  |            |      |
  1391.         |  |          +----+   |
  1392.         |  +--------- | R3 | >-|
  1393.         |             +----+   |
  1394.         |               ^      |
  1395.         |               |
  1396.        Source   --------+
  1397.  
  1398. R1 and R3 were informed about a topology change for Source and changed
  1399. their incoming interfaces. Both R1 and R3 send joins up their new
  1400. incoming interfaces. R1 also deleted its outgoing interface to
  1401. R3 because this interface is used as an incoming interface. R2,
  1402. however has not been informed about the topology change.
  1403.  
  1404. If R1 received a multicast datagram on its old expected interface, it
  1405. would silently drop it. This would happen if upstream routers from R1
  1406. to the  Source had old routing information. If upstream routers have
  1407. converged on a new path all datagrams will enter this part of the
  1408. network through R3, and it would forward appropriately to its LAN and 
  1409. to R1 which expects it. R1 would forward to its LAN as well as R2. R2,
  1410. using out of date expected incoming interface, would also forward the
  1411. packet. Once R2 is informed of the topology change, it will change its
  1412. expected incoming interface to R3 and will send a prune to R1 and a
  1413. join to R3. The final state would look like:
  1414.  
  1415.      ----------      ----------
  1416.          |               |
  1417.      ^               ^
  1418.        +----+         +----+
  1419.        | R1 | ------- | R2 |      
  1420.        +----+         +----+
  1421.         |  ^            ^
  1422.         |  |            |
  1423.         |  |            ^      |
  1424.         |  |          +----+   |
  1425.         |  +--------< | R3 | >-|
  1426.         |             +----+   |
  1427.         |               ^      |
  1428.         |               |
  1429.        Source   --------+
  1430.  
  1431.  
  1432. More generally, if unicast routing changes and the router in question  has not 
  1433. converged then one of two situations exists. 
  1434. In the first, one or more of the  existing 
  1435. outgoing interfaces may no longer reach any receivers. In this case data 
  1436. packets are forwarded until they reach a router that has converged and 
  1437. finds that the incoming interface for the packet is not right; in which 
  1438. case the packet will be dropped. 
  1439. The cost of this transient condition is the continued sending of data 
  1440. packets down links that do not lead to receivers; this can occur for the 
  1441. duration of a refresh period.
  1442.  
  1443. The second situation occurs when data packets begin to arrive over an 
  1444. incoming interface other than the one listed in the corresponding S,G 
  1445. entry. This occurs when upstream has converged and the router in question 
  1446. has not. In this case, data packets will be dropped instead of delivered 
  1447. for a time less than or equal to the convergence time + refresh period. 
  1448.  
  1449.  
  1450.  
  1451.  
  1452. 5. ESL Routers on multi-access subnetworks
  1453.  
  1454. There are several multiaccess subnetwork configurations that require 
  1455. special consideration. 
  1456.  
  1457. 5.1 Designated Routers 
  1458.  
  1459.     +----+         +----+
  1460.     | R1 |         | R2 |      
  1461.     +----+         +----+
  1462.        |              |
  1463.   -------------------------
  1464.      |       |       |
  1465.     H1a     H2a     H3b        (Hxy - Host x is a member to group y)
  1466.  
  1467. When there are multiple ESL routers on a multi-access network, only a
  1468. single router must be responsible for the following actions:
  1469.  
  1470.     o Soliciting group membership from hosts and sending ESL-Join messages.
  1471.     o Sending Register messages on behalf of a  connected
  1472.       source host when it sends a multicast packet.
  1473.     o Forwarding multicast packets onto the multi-access network.
  1474.  
  1475. This is done with a simple Designated Router (DR) election.
  1476. Neighboring routers send ESL Query packets to each other.  The
  1477. packets are sent to 224.0.0.2. The largest IP addressed system will
  1478. assume role as DR. The default transmission interval is 30 seconds. A
  1479. router should detect the DR as unreachable when it does not receive a
  1480. Query in 3 times the transmission interval. There will be one DR that
  1481. supports all groups per multi-access network.  The DR sends periodic
  1482. IGMP Host Query packets to 224.0.0.1 soliciting hosts to respond. The
  1483. DR sends multicast packets using the data link address that is mapped from
  1484. the IP Class D multicast address.
  1485.  
  1486. 5.2 Multiaccess subnetwork as a transit network
  1487.  
  1488. The following diagram shows the case where a multi-access network is
  1489. used as a transit network.
  1490.  
  1491.  
  1492.        |              |
  1493.        |              |            
  1494.     +----+         +----+          |
  1495.     | R1 |         | R2 |          |
  1496.     +----+         +----+          |
  1497.        |              |            | Downstream to group members
  1498.        |              v            |
  1499.   -------------------------        |
  1500.          |         |               |
  1501.      v         v               |
  1502.        +----+    +----+            V
  1503.        | R3 |    | R4 |
  1504.        +----+    +----+
  1505.          |         |
  1506.      v         v
  1507.          |         | 
  1508.  
  1509.  
  1510. When a LAN is used as a transit network among routers, it is required
  1511. that a single router forward multicast packets to downstream routers.
  1512. This router is known as the Router-DR. A single Router-DR is chosen
  1513. by the receipt of ESL messages unicasted by each of the downstream 
  1514. routers. All routers that use the LAN as their incoming interface for 
  1515. multicast packets from a particular source, will expect it from a single 
  1516. Router-DR. This router is the one they use for sending unicast packets to 
  1517. the source. All routers will select the same router. In the case of 
  1518. equal-cost unicast paths, the largest IP addressed next-hop is used. 
  1519. The Router-DR forwards multicast packets using data link address that 
  1520. is mapped from the IP Class D multicast address.  
  1521. The multicasted data packets will be seen by all other routers connected 
  1522. to the LAN. For each router, if it has an entry for S,G or *,G and the 
  1523. LAN is the indicated incoming interface then the router will forward the 
  1524. packet. If there is no such entry or if the incoming interface is not the 
  1525. LAN then the packet will be silently dropped.
  1526.  
  1527.  
  1528.  
  1529. In the above diagram, both R3 and R4 have downstream group members. They
  1530. will send their ESL-Join messages towards the RP, and therefore select
  1531. either R1 or R2 to send the message. Assume R2 is the shorter path to
  1532. the RP. Later, when multicast datagrams travel from the RP, they will
  1533. come through R2 only, avoiding duplicates on the LAN. The same procedure
  1534. takes place when the source-based distribution tree is built. Whatever
  1535. router on the LAN is chosen is also responsible for delivering multicast
  1536. packets to host members, if they were present.
  1537.  
  1538.  
  1539. 5.3 Parallel routers
  1540.  
  1541. The following diagram illustrates the behavior of routers that are in
  1542. parallel and the interaction of DR and RP routers.
  1543.  
  1544.                    S    
  1545.                    |    
  1546.   ------------------------------------- LAN1
  1547.        |              |          |
  1548.     +----+         +----+      +----+ DR
  1549.     | R1 | RP      | R2 |      | R3 |
  1550.     +----+         +----+ DR   +----+
  1551.        |              |          |
  1552.   ------------------------------------- LAN2
  1553.                 |        |
  1554.                H1a      H2a
  1555.  
  1556.  
  1557.  
  1558. Assume R1 is the RP for Ga, R3 is DR for LAN1,   R2 the DR for LAN2, and 
  1559. that LAN1 is the preferred path among routers to reach the RP.
  1560. If the receivers of Ga join first, R2 will send an ESL-join to R1, the
  1561. RP, out LAN1. R2 builds a multicast  entry for (*,Ga) with incoming
  1562. interface LAN1 and outgoing interface LAN2.
  1563. R1 receives the ESL-Join message and builds a multicast  entry for 
  1564. (*,Ga) with incoming interface set to {} (since it is the RP)  and 
  1565. outgoing interface  set to LAN1.
  1566.  
  1567. When S sends a multicast datagram, the DR for LAN1, R3, will encapsulate 
  1568. the data packet in a Register message and send it to R1, the RP, out LAN1. 
  1569.  
  1570. The RP, R1,  decapsulates the data packet and forwards it
  1571. onto LAN1, as indicated in the outgoing interface list of R1's *,Ga
  1572. entry.
  1573.  
  1574. The RP, R1, then processes the Register part of the message and sets
  1575. up an S,Ga entry with LAN1 as the incoming interface and a null
  1576. outgoing interface list; the outgoing interface list is copied from
  1577. *,Ga but LAN1 is NOT included in S,Ga outgoing interface list because
  1578. LAN1 is the incoming interface.
  1579.  
  1580. R1 triggers a join toward S. When R1 does a lookup on S it finds that
  1581. S is on a directly connected LAN and sends the join to the DR for that
  1582. LAN, i.e., R3.  
  1583.  
  1584. When the DR, R3, receives the join it builds an S,Ga entry with LAN1
  1585. as the incoming interface. Since there is no *,Ga entry, the outgoing
  1586. interface list is set to null. 
  1587.  
  1588. Subsequent data packets from S for Ga that arrive from LAN1 will 
  1589. be silently dropped by R1 and R3 since the S,Ga entries have  null
  1590. outgoing interface lists.  
  1591.  
  1592. For this example we assume that shortest path trees are desired. In
  1593. this case, when R2 receives the multicast datagram from S and finds
  1594. that the longest match is on *,Ga (i.e., there is no S,Ga entry in
  1595. R2), R2 creates an S,Ga entry, sets the incoming interface to LAN1
  1596. (since that is the interface used to send packets to S), and copies
  1597. the outgoing interface list from the existing *,Ga entry (in this case
  1598. LAN2).  R2 forwards this and subsequent multicast datagrams for S,G
  1599. onto LAN2.
  1600.  
  1601. When R2 creates S,Ga, it also triggers an ESL-join message 
  1602. to the next hop to S; in this case S is directly connected so 
  1603. the ESL-join is sent to the DR for that LAN, R3.  R3 receives the join 
  1604. but does not add LAN1 to its outgoing interface list for S,Ga because LAN1 is the 
  1605. incoming interface for S,Ga. 
  1606.  
  1607.  
  1608.  
  1609. 5.4 Leaf-Router Prunes
  1610. LAN connected routers must also detect when there are
  1611. no more downstream routers. The following protocol is used: when a router 
  1612. whose incoming interface is the LAN has all of its outgoing interfaces go 
  1613. to null, the router multicasts a prune message for S,G onto the LAN. All other 
  1614. routers hear this prune and if there is any router that has the LAN as 
  1615. its incoming interface for the same S,G and has non-null outgoing 
  1616. interface list, then the router sends a join message onto the 
  1617. LAN to override the prune. The join should 
  1618. go to single upstream router that is the right previous hop to the source or 
  1619. RP; however, at the same time we want others to hear the join so that 
  1620. they supress their own joins. For this reason the  join is data link 
  1621. multicasted, with the IP  address  set to the  
  1622. upstream router.
  1623.  
  1624.  
  1625. 6. Interoperation with non-ESL networks/regions
  1626.  
  1627. A network or collection of networks should be able to choose whether
  1628. to use ESL or traditional multicast to  join a distribution tree,
  1629. depending on the density of the membership in that region. 
  1630. If the density is high then there is no need to carry ESL
  1631. messages and state overhead within the region; it is  more
  1632. efficient to use RPM or flood membership reports since in general
  1633. most links will be on a path from some source to some destination and the
  1634. overhead for these traditional IP multicast mechanisms is not a
  1635. function of the number of sources. 
  1636.  
  1637. In addition, we wish to interoperate with networks that do not have
  1638. hosts and routers modified to generate and interpret ESL-Join
  1639. messages. 
  1640.  
  1641. The basic problem of splicing these "IP clouds" onto ESL trees is
  1642. identifying which border router for the IP cloud should be the entry
  1643. point for data packets from a particular source, and therefore which
  1644. sources individual border routers should put in their join and prune
  1645. lists. 
  1646. This is analogous to the LAN case when there is more than one router
  1647. serving it. The designated router is the one that takes responsibility
  1648. for serving the members on the LAN.
  1649.  
  1650. If the Border routers are running IBGP then they have the information
  1651. necessary to determine which BR should include a particular host in
  1652. its join list. Similarly if the BRs are running OSPF then the
  1653. information can be computed. However, if the domain is running DVMRP
  1654. or some other scheme, there may need to be some additional mechanism
  1655. employed in the  BRs.  This is an open issue still to be resolved in
  1656. order to achieve maximum interoperation with existing networks.
  1657.  
  1658. An additional problem arises when interoperating with a non-ESL cloud.
  1659. Namely when a receiver decides to join a group inside of a cloud in
  1660. which there are no other members  then the BRs of that cloud must
  1661. be notified in order to trigger sending of an ESL-Join join message.
  1662. In the case 
  1663. of MOSPF new group membership is advertised to backbone routers but not 
  1664. necessarily to all BRs. In the case of DVMRP and most other distance vector
  1665. IGPs membership is not advertised at all. Therefore in both cases,  some 
  1666. additional mechanism is needed. 
  1667.  
  1668. We can solve this problem in a manner similar to the multi-access LAN 
  1669. case. 
  1670.     1. Two internal (to the cloud) multicast groups are created 
  1671.     Multicast-Reporters (MR) and All-ESL-BRs.
  1672.     
  1673.     2a. If the cloud runs MOSPF then one (or a small number for reliability) of 
  1674.     the backbone routers joins the MR group. 
  1675.     2b. If the cloud runs DVMRP, then ALL internal routers that 
  1676.     have the potential of being DRs for a network must join the MR group (i.e., 
  1677.     any router that will process an IGMP report).
  1678.     
  1679.     3. All BRs that speak ESL join the All-ESL-BRs group AND the MR group.
  1680.     
  1681.     4. Members of All-ESL-BRs do a Designated BR election among themselves
  1682.  
  1683.     5. The resulting DBR sends an IGMP-query to the MR group.
  1684.     
  1685.     6. Members of MR respond by sending IGMP-report messages to the 
  1686.     MR group. Members of MR listen to these reports and supress 
  1687.     sending reports for groups that have been reported by other routers.
  1688.  
  1689. As a result, all ESL-BRs hear of all groups for which internal members 
  1690. exist. Based on this information, and information obtained from IBGP or 
  1691. OSPF, the BRs can determine which of them should send an ESL-Join 
  1692. message to the RP for each group for which there is a local member. 
  1693. Note that DBRs are source, group specific.
  1694.  
  1695. We will describe two scenarios to illustrate the interoperability
  1696. issue: one case where the source of a multicast datagram is in the
  1697. non-ESL cloud and receivers in a group are outside of the cloud, and
  1698. one case where the source is outside of the cloud and receivers are
  1699. inside the cloud.
  1700.  
  1701.            ---------------
  1702.           /               \  
  1703.          /             BR1 \  -----...-------- RP
  1704.         |                   |                 /
  1705.         |   S               |                /
  1706.         |                   |               /
  1707.         |                   |              .
  1708.          \             BR2 / -------------.
  1709.           \  BR3          /              .
  1710.            ---------------              /
  1711.               |                        /
  1712.               +---------...------------
  1713.  
  1714. S sends a multicast packet that gets to all border routers. Protocols
  1715. such as MOSPF and DVMRP will cause the multicast packet to hit all
  1716. border routers. If all border routers know of each other the one with
  1717. the shortest path to S is elected the Border DR. In case of tie, the
  1718. largest IP addressed router becomes Border DR. The Border DR sends the
  1719. Register message to the RP. All others discard the multicast packet.
  1720. The Border DR sends the multicast packets along the path to the RP after 
  1721. join messages for S,G propagate back to the DBR to establish S,G state. 
  1722.  
  1723. In the receiver in the cloud case:
  1724.  
  1725.            ---------------
  1726.           /               \  
  1727.          /             BR1 \  -----...-------- RP
  1728.         |   H1a             |                 /
  1729.         |                   |                /
  1730.         |     H2a           |               /
  1731.         |                   |              .
  1732.          \             BR2 / -------------.
  1733.           \  BR3          /              .
  1734.            ---------------              /
  1735.               |                        /
  1736.               +---------...------------
  1737.  
  1738.  
  1739. Border Routers need to know which one sends ESL-Join messages to RP
  1740. for which groups. If MOSPF is running all borders know of each
  1741. other, they can determine which one is closer to the RP. The one
  1742. closer, sends the ESL-Join message. Similarly, iBGP provides the BRs
  1743. with the information to determine whether each particular BR has the
  1744. preferred route to the RP. 
  1745.  
  1746. Similarly, once a data packet from a new source arrives at the BR, it
  1747. must determine which border router 
  1748. is closest to that source. If the BR itself is the closest, it
  1749. forwards the packet internally to the multicast group, sets up the
  1750. source-specific forwarding entry, and sends an ESL-join message toward
  1751. the source.  Otherwise, it encapsulates the packet and unicasts it to
  1752. the correct border, and that border router takes the same action.
  1753.  
  1754. In summary,  borders need to learn about each other and their respective
  1755. routes to RPs or sources using one of the following: 
  1756.     o OSPF or IS-IS
  1757.     o IBGP or IIDRP
  1758.     o Configured mesh of tunnels and unicast routing is running over
  1759.       tunnels.
  1760.  
  1761.  
  1762.  
  1763.  
  1764. 7. Design Issues
  1765.  
  1766. 7.1 Comparison with Core Based Tree 
  1767.  
  1768. CBT was proposed to address similar scaling problems, however it has
  1769. several differences; some represent functional differences and some
  1770. engineering tradeoffs.  
  1771.  
  1772. 7.1.1 Tree Types
  1773.  
  1774. The first major issue is that CBT imposes a
  1775. single shared tree for each multicast group. We justified our desire
  1776. to avoid this scenario earlier.  CBT must rely on more "cores" in
  1777. order to obtain efficient distribution paths. This means that the
  1778. core(s) must be selected carefully to avoid excessively high delay
  1779. distribution paths. Even if the core is placed optimally, there is
  1780. still the significant issue for continuous media types of
  1781. concentrating all traffic onto a common data distribution tree.
  1782.  
  1783. In ESL If some application does not want shortest path tree
  1784. distribution then a host does not have to add all new sources to its
  1785. ESL. This fact must also be signaled to the routers so that they also
  1786. operate in shared-tree mode.
  1787. This will cause the RP-based tree to continue to be used as the
  1788. distribution tree. In that way an application can choose a group tree
  1789. instead of a shortest path tree. Actually first hop routers can make
  1790. this decision independently, and a host could even choose differently
  1791. for different sources. However, if RP-based distribution is maintained in
  1792. any cases then the choice of RPs is more critical than when RPs are
  1793. used only as a transition path to shortest path trees.
  1794.  
  1795. 7.1.2 Group Specific State
  1796.  
  1797. There are also protocol engineering differences between the two.  One
  1798. of these issues is a tradeoff between requiring group specific state
  1799. on the routers in between sources and the RP, vs. carrying an option
  1800. in all DATA packets sent to the group. In CBT, data packets travel from
  1801. the source to the CBT with an option attached. THis allows the
  1802. packets to be sent initially towards the core, by non-CBT routers, and
  1803. then to be routed along the CBT once they hit a router that is on the
  1804. core tree. In ESL we have chosen to use a Register packet and
  1805. establish explicit S,G forwarding entries so that data packets need not
  1806. require as much processing. 
  1807.  
  1808.  
  1809. 7.1.3 Soft state vs. explicit reliability mechanism
  1810.  
  1811.  
  1812. CBT uses explicit hop by hop  mechanisms  to achieve reliable delivery
  1813. of control messages. ESL uses periodic refreshes as its primary means
  1814. of reliability.  This approach reduces the complexity of the protocol
  1815. and covers a wide range of protocol and network failures in a single
  1816. simple mechanism. On the other hand, it can introduce additional
  1817. message protocol overhead.
  1818.  
  1819. 7.1.4 Effect on Host Service Model
  1820.  
  1821. CBT requires that hosts be modified to participate in the CBT protocol. 
  1822. ESL proposes to make use of optional new IGMP Report messages that 
  1823. include a list of zero  to n RPs; however hosts do not  otherwise have to
  1824. participate directly in the ESL protocol.
  1825.  
  1826. 7.1.5 Incoming interface check on all multicast data packets
  1827.  
  1828. If multicast data packets loop the result can be severe; unlike unicast 
  1829. packets, multicast packets fan out each time they loop. Therefore we 
  1830. assert that all multicast data packets should be subject to an incoming 
  1831. interface check comparable to the one performed by DVMRP and MOSPF. In 
  1832. order to do this check *,G state can only be used downstream of the RP. 
  1833. As a consequence, in any particular router on the shared tree, a specific 
  1834. S,G entry must be  maintained for sources that are upstream of the RP 
  1835. relative to that  router. 
  1836.     
  1837.  
  1838. 7.2 Selecting and Identifying RPs
  1839.  
  1840. An RP for a particular multicast group can be any IP-addressable
  1841. entity in the internet.  However, it is most efficient and convenient
  1842. for the RP to be the directly-connected ESL router of the members of
  1843. the group. If an RP has local members of the group then there is no
  1844. wasted overhead associated with sources continually sending their data
  1845. packets to the RP since it needed to be delivered there anyway for
  1846. delivery to those members.
  1847.  
  1848. Nevertheless, we need not be overly concerned with placement of the RPs 
  1849. when shortest path trees are used because the RP will 
  1850. not remain on the distribution path for most receivers, unless it happens 
  1851. to be centrally located. Obviously, pathological cases should be avoided, 
  1852. such as putting the RP on the other end of a very narrow link that is 
  1853. exceeded by the datarate of sources. The RP address can be configured or 
  1854. can be dynamically discovered by mapping from the multicast address, query 
  1855. of a directory service, or from information obtained via new ESL-RP-Report
  1856. messages. The mapping of G to RP addresses should be cached. 
  1857.  
  1858. While the mapping of multicast addresses to  RP addresses is an open
  1859. issue in the long term, in  
  1860. the short term we will implement two mechanism. The first approach is
  1861. to simply manually configure the mapping. The second approach is to
  1862. allow hosts (both sources and receivers) to inform routers of the
  1863. mapping using a new ESL-RP-Report message. The latter approach is
  1864. needed to support dynamic groups that hosts advertise and discover by
  1865. participating in a special application, e.g., the session directory
  1866. (sd) tool developed by V. Jacobson.  Advertising hosts will advertise
  1867. RP addresses along with the multicast address and other hosts that
  1868. wish to send to or join the group will send an ESL-RP-Report message
  1869. with the RP address(es) in response to IGMP Queries.
  1870.  
  1871. The DNS is not a general solution because it is not appropriate for 
  1872. advertising dynamic information quickly as is needed for dynamic 
  1873. multicast groups. In the future if the DNS is used for multicast address 
  1874. advertisement, RP addresses can be advertised along with them. 
  1875.  
  1876.  
  1877. 7.4 Separating receiver and sender roles
  1878.  
  1879. We chose to continue with the design philosophy of IP multicast for
  1880. two reasons. The first is that in order to interoperate seamlessly
  1881. with IP multicast we needed to maintain the separation between
  1882. receivers and senders. The second is that the separation  allows us
  1883. to build a protocol that has less overhead per receiver by introducing
  1884. more overhead per source.
  1885.  
  1886. While some applications might like to have explicit information about
  1887. all receivers in a group, the aggregation mechanisms proposed for very
  1888. large groups would interfere with the utility of this information
  1889. anyway; i.e., explicit receiver information would only tell which
  1890. domains were receiving the packets, not which hosts within those
  1891. domains. It seems that some other mechanism is needed if an
  1892. application really wants to enforce access control on the multicast
  1893. group. This is a subject for further study.
  1894.  
  1895. In many applications the source should be a receiver as well in order
  1896. to obtain feedback and facilitate debugging\cite{Van}. For this reason
  1897. we might add an optimization whereby an IGMP Register message that is
  1898. appropriately flagged, would be interpreted and processed as both an
  1899. IGMP Register and an IGMP  join message. 
  1900.  
  1901. 7.5 State overhead
  1902.  
  1903. State overhead is of considerable concern given the large number of 
  1904. multicast groups that will exist and the large number of potential 
  1905. sources that do exist.
  1906. The ESL protocol described here entails the following state.
  1907. 1. On the RP downstream tree (RP and routers downstream of RP) there is:
  1908. a *,G state for each Group, and negative or positive cache information 
  1909. for   each Si,G  when SPT's used..
  1910.  
  1911. 2. On the SPT's Si,G for subset of Si's whose SPTs pass through that 
  1912. particular router 
  1913.  
  1914. 3. On the upstream RP Tree (between source and RP, what CBT calls offtree), 
  1915. there is also Si,G state for each source whose shortest path to the RP 
  1916. passes through the particular router. 
  1917.  
  1918. In the periphery the number of sources with SPTs through a router is not so 
  1919. large. The number of groups may still be large but is still not as large as 
  1920. in center of the network. 
  1921.  
  1922. However,  a very large number of sources' SPTs
  1923. pass through "central routers" and a very large number of groups have
  1924. distribution  trees that pass through the central routers as well. 
  1925. Source specific state is unavoidable if you want SPTs. If you do not need 
  1926. SPTs or do not need all of the tree to be SPT, use *,G instead.
  1927. We should investigate a situation in which  periphery routers switch to 
  1928. their SPT interfaces but central  
  1929. routers stick with *,G RP tree entry. We need to answer two questions:  
  1930. What kind/quality of trees do we  
  1931. end up with?  and what is the implication for traffic Concentration in 
  1932. center of network, even given the greater aggregate BW found there. 
  1933.  
  1934. There remains the open issue of aggregation across groups as well. Scott 
  1935. Brim has proposed some mechanisms for dense mode operation.
  1936. CBT does avoid group specific state on the routers that lie between 
  1937. sources and the shared tree for that group by employing and processing 
  1938. an option in all  data packets sent to sparse multicast groups.
  1939. For now, we wish to avoid interfering with data packet processing and pay 
  1940. with state. But we must due further studies to determine how many
  1941. groups can we   supported before the shared-tree mechanism or cross-group
  1942. aggregation is mandated?  
  1943.  
  1944.  
  1945. 7.6 Aggregation of information in ESL
  1946.  
  1947. There are several motivations for aggregating source information beyond 
  1948. the subnet level supported in the current specification; the
  1949. most important are ESL  message size and the amount of memory used for
  1950. routing forwarding entries. 
  1951.  
  1952. One possibility is to use the highest level aggregate available for an
  1953. address when setting up the multicast forwarding entry. This is
  1954. optimal with respect to forwarding entry space. It is also optimal
  1955. with respect to ESL message size. However,  ESL messages
  1956. will carry very coarse information and  when the messages arrive at
  1957. routers closer to the source(s) where more specific routes exist there
  1958. will be a large fanout and ESL messages will travel toward all members
  1959. of the aggregate which would be inefficient in most/many cases.
  1960.  
  1961. If ESL is being used for inter-domain routing, and  routers are
  1962. able to map from IP address to domain identifier,  then one possibility
  1963. is to use the domain level aggregate for a source in ESL messages (AS
  1964. numbers or RDI's). Then the ESL message will travel to the BR(s) of
  1965. the domain and the BRs can use the internal multicast protocol's
  1966. mechanism for propagating the join within the domain (e.g. send
  1967. appropriate LSA in MOSPF or register a "local member" and do not prune
  1968. in the case of RPF).   However this approach requires that it is both possible 
  1969. and efficient to map from IP to domain address when processing data 
  1970. packets, as well as control packets. 
  1971.  
  1972. %%Editorial Note: the following is a very gross high level description
  1973. %%of Vans scheme. It is just a placeholder for the difinitive paragraph
  1974. %%that I will eventually extract from him. 
  1975. Another possibility is to use proxies as suggested by V. Jacobson.
  1976. In this case within ESL clouds, ESL messages need only refer to proxies
  1977. for sources outside the cloud. In this scheme BRs would join an ESL
  1978. tree externally and inject themselves as sources internally. When data
  1979. packets arrived, the data packet would be forwarded into the cloud and
  1980. routers would see a new source. They would then need to determine
  1981. which is the entry BR for the particular source and forward the packet
  1982. on the multicast tree associated with that BR. The router could cache
  1983. a forwarding entry for the new source in order to avoid repeating this
  1984. step on each data packet.  To create efficient multicast distribution 
  1985. trees that do not generate duplicate packets this scheme requires that internal
  1986. routers be able to map from an IP address to the entry BR  used by
  1987. that IP address as source. If such a mechanism is not available, possible 
  1988. approximations may be employed that map packets based on the previous hop 
  1989. router. This technique is currently being 
  1990. developed and would be deployable as an addition to the current protocol 
  1991. without affecting the protocol specification per se. 
  1992.  
  1993. In the absence of aggregation or proxy techniques, when the number of
  1994. sources get to some threshold value (to be determined), receivers
  1995. could compromise the quality of the distribution tree in exchange for
  1996. accommodating large numbers of unaggregatable sources. In particular
  1997. receivers could continue to receive packets over the group tree
  1998. instead of moving them off to a shortest path tree. For example,
  1999. Receivers could send a wildcard IGMP to an RP to maintain distribution
  2000. of all sources packets to that multicast address via the RP.  While
  2001. this would result in a suboptimal distribution tree, it would avoid
  2002. explicit enumeration of sources.  Alternatively, the receiver could
  2003. send a wildcard with explicit sources listed in the prune portion of
  2004. the list. This would allow the receiver to get shortest path delivery from 
  2005. a subset of the sources.
  2006.  
  2007.  
  2008. %%DE added
  2009. One problem with leaving selection of shared vs. shortest path trees to 
  2010. the receivers is that the burden of excessive S,G entries will most 
  2011. likely be in the center of the network far away from receivers. In this 
  2012. case routers should be able to act unilaterally to decline requested 
  2013. establishment of new S,G entries. If a router does not process a join 
  2014. then the downstream receivers will not receive packets over the shortest 
  2015. path. Assuming a strategy is used whereby receivers do not prune the 
  2016. shared tree until packets arrive on the shortest path tree, then 
  2017. receivers will simply remain on the shared tree until more state becomes 
  2018. available on the shortest path tree. 
  2019.  
  2020.  
  2021. 7.7 Interaction with policy based routing
  2022.  
  2023. ESL messages and data packets will travel over paths that include policy so 
  2024. long as the policy does not preclude them, to the same extent that unicast 
  2025. routing does. In addition, in the future we will construct a special ESL 
  2026. message type that embeds a Source Demand Route (SDRP route) and thereby 
  2027. causes the ESL message and the multicast forwarding state to be on an 
  2028. alternative distribution tree branch. 
  2029.  
  2030. To obtain policy sensitive distribution of multicast packets we need to 
  2031. consider the paths chosen for forwarding ESL-Join and Register messages. 
  2032.  
  2033. If the path to reach the RP or some source is indicated as being the 
  2034. appropriate QOS and indicated as being 
  2035. symmetric then ESL routers can determine that if they forward joins 
  2036. upstream that the data packets will allowed to travel downstream.
  2037.  
  2038. This implies that BGP/IDRP should carry two QOS flags: symmetry flag and 
  2039. multicast willing flag. The former if set indicates that that each AD hop 
  2040. has local route selection policies that allow data to flow in either 
  2041. direction. THe latter flag indicates that each AD hop on the path has a 
  2042. local transit policy that indicates that multicast packets are allowed.
  2043. NOTE: there are two types of symmetry. One indicates that it is not in 
  2044. violation of transit policies to allow data to flow in both directions so 
  2045. even if route selection is not symmetric, if mcast forwarding entries 
  2046. point along the reverse route it does not violate policy. THe second type 
  2047. of symmetry indicates that packets are in fact routed symmetrically--i.e.,  
  2048. if R1 forwards Packets from S destined for D  out over an interface to 
  2049. R2, then the route is truely symmetric if R2 forwards packets from D to S 
  2050. over its interface to R1. For ESL we only need the former information. 
  2051.  
  2052.  
  2053. If the generic route computed by hop-by-hop routing does not have the 
  2054. symmetry and mcast bits set, but   there is an SDRP route that does, then 
  2055. the ESL message should be sent with  an embedded SDRP route. This option 
  2056. needs to be added to ESL join messages.  Its absence will indicate 
  2057. forwarding according to the router's unicast  
  2058. routing tables. Its presence will indicate forwarding according to the SDRP 
  2059. route. This implies that SDRP should also carry 
  2060. symmetry and mcast QOS bits AND that ESL should carry an optional SDRP 
  2061. route inside of it.
  2062.  
  2063.  
  2064.  
  2065. 7.8 Interaction with Receiver Initiated reservation setup such as RSVP
  2066.  
  2067. Once the SP distribution tree has been established 
  2068. RSVP reservation messages follow the reverse of senders path
  2069. messages and the senders path messages will travel according to the
  2070. state that ESL installs.  However, one wants to avoid switching
  2071. reservation-oriented routes so the receiver could initially receive
  2072. all packets via the RP distribution tree and after some delay it could
  2073. send  ESL messages to establish the SP tree and then establish
  2074. reservations over that tree.  The source's path message
  2075. would travel first via the RP path, then to avoid setting up a
  2076. reservation on the RP path, the receiver would send its IGMP
  2077. message BEFORE it sends out its reservation message and wait for
  2078. another path message to travel over the new SP. 
  2079.  
  2080. In summary we expect  that this receiver initiated routing is well
  2081. suited to receiver initiated reservations since if a reservation is
  2082. blocked the previous router or the receiver can select an alternative
  2083. reverse path to the particular source(s). This is also a subject for 
  2084. future work that will affect the use of the protocol, and not the 
  2085. protocol itself.
  2086.  
  2087.  
  2088.  
  2089. 7.9 Dense Mode
  2090.  
  2091. We can use similar IGMP extensions to support a mode of multicasting
  2092. that is good (more efficient than ESL-sparse) for forwarding to
  2093. receivers that densely  populate a region. Clouds might run this form
  2094. of ESL internally as their internal multicast mechanism; or it could
  2095. support dense-inter-domain groups.
  2096.  
  2097. In this model routers run RPF (forward out all interfaces, except the
  2098. incoming, if a packet arrived on the outgoing interface used to get to
  2099. the source). Directly connected
  2100. routers run IGMP query and report and when they have no members
  2101. for a group and receive packets for it, they send IGMP prune messages
  2102. that consist of ESL messages with Prune lists only. Similarly, when a
  2103. router gets a packet on a source that is NOT its outgoing interface to
  2104. the source, that router sends an ESL message with prune information
  2105. only. ESL records prune information and propagates it upwards if
  2106. entire downstream branches prune themselves. Periodically the prune
  2107. information is timed out and the packets are sent again and downstream
  2108. routers must resend the prune messages. 
  2109.  
  2110. A draft specification of dense mode ESL is available from Dino Farinacci.  
  2111.  
  2112. Running dense mode internally with ESL sparse mode outside has all
  2113. the same problems of DVMRP internally--they need to run BGP or tunnels
  2114. to identify appropriate BRs, and the need to add a mechanism for
  2115. alerting BRs to new group members. 
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121. 7.10 Open Issues
  2122.  
  2123. The open issues associated with ESL are:
  2124.  
  2125. 1. Aggregation of source lists via use of proxies.
  2126.  
  2127. 2. Discovering RP addresses: new IGMP-Report-RP message. 
  2128.  
  2129. 3. Aggregating group specific state along the shared tree.
  2130.  
  2131. 4. Dense to Sparse to Dense transition issues; see dense mode document.
  2132.  
  2133. 5. Deciding when to switch from shared to shortest path trees.
  2134.  
  2135.  
  2136.  
  2137.  
  2138. Acknowledgments
  2139.  
  2140. Tony Ballardie, Scott Brim, Jon Crowcroft, Paul Francis, Ching-Gung 
  2141. (Charley) Liu, Liming Wei and Lixia Zhang provided detailed comments on 
  2142. previous drafts. The authors of CBT and membership of the IDMR WG provided 
  2143. many of the motivating ideas for this work and useful feedback on design 
  2144. details. 
  2145.